package com.cmc.cloud.cmclink.doc.convert;

import com.cmc.cloud.cmclink.doc.api.document.req.so.SoForecastUpdateReqDto;
import com.cmc.cloud.cmclink.doc.entity.SoForecastDO;
import com.cmc.cloud.cmclink.doc.api.document.req.so.SoForecastBaseVO;
import com.cmc.cloud.cmclink.doc.mq.SoEdiReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.soforecastvo.SoForecastCreateReqVO;
import com.cmc.cloud.cmclink.doc.api.document.req.so.SoForecastRespVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.soforecastvo.SoForecastUpdateReqVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 订舱预配信息 Convert
 *
 * @author 招商轮船-管理员
 */
@Mapper
public interface SoForecastConvert {

    SoForecastConvert INSTANCE = Mappers.getMapper(SoForecastConvert.class);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    SoForecastDO convert(SoForecastCreateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    List<SoForecastDO> convertBatchUpdate(List<SoForecastUpdateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    List<SoForecastDO> convertBatch(List<SoForecastCreateReqVO> bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    SoForecastDO convert(SoForecastUpdateReqVO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    SoForecastRespVO convert(SoForecastDO bean);

    /**
     * 属性转换 convert
     *
     * @param bean bean bean
     * @return obj
     */
    SoForecastRespVO convert(SoForecastRespVO bean);

    /**
     * 属性转换 convert
     *
     * @param list bean list
     * @return obj
     */
    List<SoForecastRespVO> convertListBase(List<SoForecastBaseVO> list);

    /**
     * 属性转换 convert
     *
     * @param list bean list
     * @return obj
     */
    List<SoForecastRespVO> convertList(List<SoForecastDO> list);

    /**
     * 属性转换 convert
     *
     * @param list bean list
     * @return obj
     */
    List<SoForecastCreateReqVO> convertCreateList(List<SoForecastDO> list);

    /**
     * 属性转换
     *
     * @param soForecastUpdateReqDtoList bean soForecastUpdateReqDtoList
     * @return obj
     */
    List<SoForecastUpdateReqVO> convertSoForecastUpdateReqDto(List<SoForecastUpdateReqDto> soForecastUpdateReqDtoList);

    /**
     * EDI属性转换
     *
     * @param forecastList list
     * @return obj List<SoForecastUpdateReqVO>
     */
    List<SoForecastUpdateReqVO> ediConvertSoForecastUpdateReqDto(List<SoEdiReqVO.Forecast> forecastList);

    /**
     * 属性转换 convert
     *
     * @param list SoForecastRespVO
     * @return obj
     */
    List<SoForecastDO> convertDoList(List<SoForecastRespVO> list);

    /**
     * 属性转换
     *
     * @param soForecastDoList bean
     * @return obj
     */
    List<SoForecastUpdateReqDto> convertSoForecastUpdateReqDtos(List<SoForecastDO> soForecastDoList);

}
